<?php
/*****************************************************************************\
+-----------------------------------------------------------------------------+
| X-Cart                                                                      |
| Copyright (c) 2001-2007 Ruslan R. Fazliev <rrf@rrf.ru>                      |
| All rights reserved.                                                        |
+-----------------------------------------------------------------------------+
| PLEASE READ  THE FULL TEXT OF SOFTWARE LICENSE AGREEMENT IN THE "COPYRIGHT" |
| FILE PROVIDED WITH THIS DISTRIBUTION. THE AGREEMENT TEXT IS ALSO AVAILABLE  |
| AT THE FOLLOWING URL: http://www.x-cart.com/license.php                     |
|                                                                             |
| THIS  AGREEMENT  EXPRESSES  THE  TERMS  AND CONDITIONS ON WHICH YOU MAY USE |
| THIS SOFTWARE   PROGRAM   AND  ASSOCIATED  DOCUMENTATION   THAT  RUSLAN  R. |
| FAZLIEV (hereinafter  referred to as "THE AUTHOR") IS FURNISHING  OR MAKING |
| AVAILABLE TO YOU WITH  THIS  AGREEMENT  (COLLECTIVELY,  THE  "SOFTWARE").   |
| PLEASE   REVIEW   THE  TERMS  AND   CONDITIONS  OF  THIS  LICENSE AGREEMENT |
| CAREFULLY   BEFORE   INSTALLING   OR  USING  THE  SOFTWARE.  BY INSTALLING, |
| COPYING   OR   OTHERWISE   USING   THE   SOFTWARE,  YOU  AND  YOUR  COMPANY |
| (COLLECTIVELY,  "YOU")  ARE  ACCEPTING  AND AGREEING  TO  THE TERMS OF THIS |
| LICENSE   AGREEMENT.   IF  YOU    ARE  NOT  WILLING   TO  BE  BOUND BY THIS |
| AGREEMENT, DO  NOT INSTALL OR USE THE SOFTWARE.  VARIOUS   COPYRIGHTS   AND |
| OTHER   INTELLECTUAL   PROPERTY   RIGHTS    PROTECT   THE   SOFTWARE.  THIS |
| AGREEMENT IS A LICENSE AGREEMENT THAT GIVES  YOU  LIMITED  RIGHTS   TO  USE |
| THE  SOFTWARE   AND  NOT  AN  AGREEMENT  FOR SALE OR FOR  TRANSFER OF TITLE.|
| THE AUTHOR RETAINS ALL RIGHTS NOT EXPRESSLY GRANTED BY THIS AGREEMENT.      |
|                                                                             |
| The Initial Developer of the Original Code is Ruslan R. Fazliev             |
| Portions created by Ruslan R. Fazliev are Copyright (C) 2001-2007           |
| Ruslan R. Fazliev. All Rights Reserved.                                     |
+-----------------------------------------------------------------------------+
\*****************************************************************************/

#
# $Id: rc4.php,v 1.4.2.1 2007/03/22 13:54:31 svowl Exp $
#
# RC4 crypt method functions
#

if ( !defined('XCART_START') ) { header("Location: ../"); die("Access denied"); }

# RC4 crypt function
#
function func_rc4_crypt ($data, $key) {
	$hash = array();
	$box = array();

	$key_length = strlen($key);
	$data_length = strlen($data);

	for ($x = 0; $x < 256; $x++) {
		$hash[$x] = ord($key[$x % $key_length]);
		$box[$x] = $x;
	}

	for ($y = $x = 0; $x < 256; $x++) {
		$y = ($y + $box[$x] + $hash[$x]) % 256;
		$tmp = $box[$x];
		$box[$x] = $box[$y];
		$box[$y] = $tmp;
	}

	for ($z = $y = $x = 0; $x < $data_length; $x++) {
		$z = ($z + 1) % 256;
		$y = ($y + $box[$z]) % 256;

		$tmp = $box[$z];
		$box[$z] = $box[$y];
		$box[$y] = $tmp;

		$k = $box[(($box[$z] + $box[$y]) % 256)];
		$return .= chr(ord($data[$x]) ^ $k);
	}

	return $return;
}

#
# RC4 decrypt function
#
function func_rc4_decrypt ($data, $key) {
	return func_rc4_crypt($data, $key);
}
?>

